package top.roadvast.springboot.design_pattern.singleton;

/**
 * @Author 郭泽鹏
 * @Date 2021/10/19 15:58
 * @Version 1.0
 * @Description
 * 懒汉式（线程同步）【不推荐使用】
 * 解决上面第三种实现方式的线程不安全问题，做个线程同步就可以了，于是就对getInstance()方法进行了线程同步。
 * 缺点：效率太低了，每个线程在想获得类的实例时候，执行getInstance()方法都要进行同步。
 * 而其实这个方法只执行一次实例化代码就够了，后面的想获得该类实例，直接return就行了。
 * 方法进行同步效率太低要改进。
 */
public class Singleton04 {
    private static Singleton04 instance;

    /**
     * 不允许外部类访问
     */
    private Singleton04() {
    }

    /**
     * 在方法上加锁实现线程同步
     * @return 本类实例
     */
    public static synchronized Singleton04 getInstance() {
        if (instance == null) {
            instance = new Singleton04();
        }
        return instance;
    }
}
